'''
    本模块的作用在于帮助用户创建 config 文件

    用法:
        python create_config.py

    按需填写

    如果报错请仔细阅读报错信息, 并根据报错信息的提示进行捕获并解决
'''


import json
import sys
import os


# debug 即本机调试模式
# 将此值设置为 N 时, 为线上环境
debug_flag_dict = {
    'y': 1,
    'Y': 1,
    'n': 0,
    'N': 0
}
debug_flag = None
while True:
    debug_flag = input('是否进入调试模式 (Y/N): ')
    if debug_flag not in ('y', 'Y', 'n', 'N'):
        print('请正确输入 ! !')
    else:
        break
debug_flag = debug_flag_dict[debug_flag]


# 设置端口 0 ~ 65535
Port = 80
while True:
    Port = input('请输入端口号 (0 - 65535): ')
    try:
        Port = int(Port)
    except ValueError as error:
        print(error)
        print('请正确输入端口号 ! !')
        Port = 80
        continue
    if 0 <= Port <= 65535:
        break
    else:
        print('请正确输入端口号 ! !')



config = {
    "Port": Port,
    "debug": debug_flag
}


print('配置成功: ', config)

print('正在生成文件 . . .')

# 判断本目录下是否有 config 文件夹
if 'config' in os.listdir('.'):
    # 判断 config 文件夹下是否有 config.json 文件
    if os.path.isdir('config'):
        if 'config.json' in os.listdir('./config'):
            print('\'./config/config.json\' 文件已存在')
            print('请自行查看并删除再重新运行该程序')
            print('ERROR: 配置文件生成失败  [原因: config.json 已存在]')
            sys.exit(0)
        else:
            # 没有 config.json 文件则写入
            with open('./config/config.json', 'w', encoding='utf-8') as f:
                json.dump(config, f)
    else:
        print('config 存在文件冲突')
        print('请自行查看项目目录下是否存在 \'config\' 的文件')
        print('如果有, 请删除它 或 移动至别的目录')
        print('ERROR: 配置文件生成失败  [原因: 存放配置的文件夹与已存在的文件重名]')
else:
    # 创建配置文件夹
    os.mkdir('config')
    # 将 config 写入
    with open('./config/config.json', 'w', encoding='utf-8') as f:
        json.dump(config, f)


